`
https://leetcode.cn/problems/remove-covered-intervals/
`

/**
 * @param {number[][]} intervals
 * @return {number}
 */
var removeCoveredIntervals = function (intervals) {
  // 按起点大小升序排序，若起点相同则按终点降序排序
  intervals.sort((a, b) => {
    if (a[0] === b[0]) {
      return b[1] - a[1]
    }
    return a[0] - b[0]
  })

  // 记录合并区域的大小
  let left = intervals[0][0], right = intervals[0][1]

  // 记录删除的区间个数
  let res = 0

  for (let i = 1; i < intervals.length; i++) {
    const intv = intervals[i]
    // 区间之间的关系只有三种
    // 找到被覆盖的区间，删掉
    if (left <= intv[0] && right >= intv[1]) {
      res++
    }

    // 找到相交的区间，合并
    if (left <= intv[0] && right <= intv[1]) {
      right = intv[1]
    }

    // 完全不相交，更新起点和终点
    if (right < intv[0]) {
      left = intv[0]
      right = intv[1]
    }
  }

  return intervals.length - res
};

// test
console.log(removeCoveredIntervals([[1,4],[3,6],[2,8]])) // 3